package cn.walls1717.ggkt.live.service;

import cn.walls1717.ggkt.model.live.LiveCourse;
import cn.walls1717.ggkt.vo.live.LiveCourseConfigVo;
import cn.walls1717.ggkt.vo.live.LiveCourseFormVo;
import cn.walls1717.ggkt.vo.live.LiveCourseVo;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 直播课程表服务接口
 *
 * @author walls1717
 * @since 2022/07/23
 */
public interface LiveCourseService extends IService<LiveCourse> {

    /**
     * 直播课程分页展示
     *
     * @param pageNum  当前页
     * @param pageSize 当前页数据量
     * @return 分页数据
     */
    Page<LiveCourse> listPages(Long pageNum, Long pageSize);

    /**
     * 添加直播课程
     *
     * @param liveCourseFormVo 直播课程
     */
    void saveLiveCourse(LiveCourseFormVo liveCourseFormVo);

    /**
     * 删除直播课程
     *
     * @param id 直播课程id
     */
    void deleteLiveCourseById(Long id);

    /**
     * 根据id获取LiveCourseFormVo
     *
     * @param id 直播课程id
     * @return LiveCourseFormVo
     */
    LiveCourseFormVo getLiveCourseFormById(Long id);

    /**
     * 修改
     *
     * @param liveCourseVo 修改对象
     */
    void updateLiveCourse(LiveCourseFormVo liveCourseVo);

    /**
     * 获取配置信息
     *
     * @param id 直播课程id
     * @return liveCourseConfigVo
     */
    LiveCourseConfigVo getCourseConfigById(Long id);

    /**
     * 修改配置信息
     *
     * @param liveCourseConfigVo 配置信息
     */
    void updateLiveConfig(LiveCourseConfigVo liveCourseConfigVo);

    /**
     * 获取最近的直播
     *
     * @return 最近的直播课程
     */
    List<LiveCourseVo> listLatelyLives();

    /**
     * 获取用户access_token
     *
     * @param id 课程id
     * @param userId 用户id
     * @return json
     */
    JSONObject getPlayAuth(Long id, Long userId);

    /**
     * 根据ID查询课程
     * @param courseId 课程id
     * @return map
     */
    Map<String, Object> getLiveCourseInfoByCourseId(Long courseId);
}
